接下來的幾天,要跟大家介紹一個超級重要的模組—BeautifulSoup
利用它,能輕鬆地找到HTML原始檔案中我們想要尋找的元素內容~
一起來看看吧!
要執行這個外部模組前,必須至CMD進行安裝
pip install beautifulsoup4
pip install lxml
以下為影片中有使用到的程式碼
<!doctype html>
<!-- 請將此檔案儲存成bs4_HTML.html -->
<html lang="zh-tw">
<head>
<meta charset="utf-8">
<title>水母</title>
<style>
section.section1 {background-color:#AAFFEE;} /*薄荷綠*/
h1#title {background-color:#CCCCFF;} /*淡紫色*/
h1#content1 {color:#227700;} /*深綠色*/
h1#content2 {color:#7700BB;} /*深紫色*/
span {color:red;}
</style>
</head>
<body>
<h1 id="title">水母的天敵</h1>
<img src="DSC_0394.jpg" alt="於海生館拍攝的水母" height="300" width="450">
<section class="section1">
<h1 id="content1">海龜</h1>
<p>捕食水母為生,海龜除了<span>眼睛</span>外,身體其他部分都可以抵抗水母的毒性,牠們在捕食水母時會閉上眼睛。</p>
<a href="https://zh.wikipedia.org/wiki/%E6%B5%B7%E9%BE%9F">維基百科海龜連結</a>
</section>
<section class="section1">
<h1 id="content2">紫螺</h1>
<p>分布在熱帶太平洋溫暖的水域,愛吃漂浮在水面的水母。</p>
<a href="https://zh.wikipedia.org/wiki/%E7%B4%AB%E8%9E%BA">維基百科紫螺連結</a>
</section>
</body>
</html>
#查看資料型態
import requests, bs4
url = "https://new.ntpu.edu.tw/"
htmlfile = requests.get(url)
soup = bs4.BeautifulSoup(htmlfile.text, 'lxml')
print(type(soup))
#先在新手村修練一下!
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML.html在您電腦中的路徑
import bs4
fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')
print(type(objsoup))
#尋找title標籤
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML.html在您電腦中的路徑
import bs4
fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')
print("物件類型 :", type(objsoup.title))
print("title標籤 :", objsoup.title)
print("title標籤內容:", objsoup.title.text)
#find()
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML.html在您電腦中的路徑
import bs4
fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')
objtag = objsoup.find('h1')
print("物件類型 :", type(objtag))
print("列印標籤 :", objtag)
print("列印標籤內容:", objtag.text)
#find_all()
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML.html在您電腦中的路徑
import bs4
fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')
objtag = objsoup.find_all('h1')
print("物件類型 :", type(objtag))
print("列印標籤 :", objtag)
#印出find_all()回傳的串列內容
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML.html在您電腦中的路徑
import bs4
fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')
objtag = objsoup.find_all('h1')
print("物件類型 :", type(objtag))
print("列印標籤 :", objtag)
print()
print(type(objtag[0]))
print("方法一:")
for data in objtag:
print(data.text)
print("方法二:")
for data in objtag:
print(data.getText())
print("方法三:")
for data in objtag:
print(str(data))
print("方法四:")
for i in range(len(objtag)):
print(objtag[i])
print(type(objtag[i]))
如果在影片中有說得不太清楚或錯誤的地方,歡迎留言告訴我,謝謝您的指教。